package com.ics.atable.chat.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 全局跨域配置
 * 1. 跨域是指浏览器访问的 URL 和后端接口地址的域名（或端口号）不一致导致的，导致浏览器拒绝访问。
 * 2. 为了开发调试方便，可以通过全局跨域配置，让整个项目所有的接口支持跨域，解决跨域报错
 *
 * @author haohongbin
 */
@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 覆盖所有请求
        registry.addMapping("/**")
                // 允许发送 Cookie
                .allowCredentials(true)
                // 放行哪些域名（必须用 patterns, 否则 * 会和 allowCredentials 冲突）
                .allowedOriginPatterns("*")
                // 放行哪些方法（必须）
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                // 放行哪些头信息（必须）
                .allowedHeaders("*")
                // 暴露哪些头信息（必须）
                .exposedHeaders("*");
    }
}
